'use strict'

import Vue from 'vue'
import baseUrl from './baseurl.config'
import axios from 'axios'

// Full config:  https://github.com/axios/axios#request-config
axios.defaults.baseURL = baseUrl
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'

let config = {
    // baseURL: process.env.baseURL || process.env.apiUrl || ""
    timeout: 60 * 1000 // Timeout
    // withCredentials: true, // Check cross-site Access-Control
}

const _axios = axios.create(config)

_axios.interceptors.request.use(
    function (config) {
    // Do something before request is sent
    //     let token = JCookie.getCookie('token')
    //     if (token) {
    //         // config.header['token'] = token;
    //         if (config.url.indexOf('?') > 0) {
    //             config.url = config.url + '&token=' + token
    //         } else {
    //             config.url = config.url + '?token=' + token
    //         }
    //     }
        return config
    },
    function (error) {
    // Do something with request error
        return Promise.reject(error)
    }
)

// Add a response interceptor
_axios.interceptors.response.use(
    function (response) {
    // Do something with response data
    //     if(response.data.code === 10004){
    //         JCookie.removeCookie('token');
    //         JCookie.removeCookie('user');
    //
    //         router.replace({
    //             path: '/login',
    //             query: {redirect: router.currentRoute.fullPath}
    //         });
    //     }
        return response
    },
    function (error) {
    // Do something with response error
        return Promise.reject(error)
    }
)

Plugin.install = function (Vue, options) {
    Vue.axios = _axios
    Vue.$http = _axios
    window.axios = _axios
    Object.defineProperties(Vue.prototype, {
        axios: {
            get () {
                return _axios
            }
        },
        $axios: {
            get () {
                return _axios
            }
        }
    })
}

Vue.use(Plugin)

export default Plugin
